package editorsvg.propiedades;

import javax.swing.JComponent;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 * Propiedad que contiene un objeto Integer.
 *
 * @author Jorge Berjano
 */
public class PropiedadNumericaEntera /*extends Propiedad*/ {

    private transient JSlider slider;
    private int minimo;
    private int maximo;

    public PropiedadNumericaEntera(Object objeto, String nombre) {
//        super(objeto, nombre);
    }

    public PropiedadNumericaEntera(Object objeto, String nombre, String nombreAtributoXml) {
//        super(objeto, nombre, nombreAtributoXml);
    }

    public void rango(int min, int max) {
        minimo = min;
        maximo = max;
    }

    public Class getClase() {
        return Integer.class;
    }

    public int obtenerNumeroEntero() {
        Object valor = null;//getValor();

        if (valor instanceof Integer) {
            return ((Integer) valor).intValue();
        } else {
            return 0;
        }
    }

    public void asignarNumeroEntero(int valor) {
//        setValor(new Integer(valor));
    }

    public JComponent obtenerComponenteModificacion() {
        if (maximo <= minimo) {
            return null;
        }
        if (slider == null) {
            slider = new JSlider(minimo, maximo);
            int v = obtenerNumeroEntero();
            slider.setValue(v);
            slider.addChangeListener(new ChangeListener() {

                @Override
                public void stateChanged(ChangeEvent evento) {
                    SliderAccionado();
                }
            });
        }
        return slider;
    }
    // Si se desliza el slider se actualiza el valor numerico

    private void SliderAccionado() {
        asignarNumeroEntero(slider.getValue());
    }

    public boolean permitirEditarTexto() {
        return true;
    }

    public void parsearPropiedad(String valorString) throws Exception {


        int numero = Integer.parseInt(valorString);
        asignarNumeroEntero(numero);

    }
}
